home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / ip / ka9q / aztecnos.arc / ASYVEC.ASM < prev    next >
Encoding:
Assembly Source File  |  1988-10-23  |  2.9 KB  |  164 lines

  1.     include lmacros.h
  2.     assume    ds:dataseg
  3.     public    Sssave,Spsave,Intstk_,doret
  4.     extrn    _Dorg_:byte
  5.  
  6.     ifdef    FARPROC
  7.     extrn    doret:far,asyint_:far
  8.     else
  9.     extrn    doret:near,asyint_:near
  10.     endif
  11.  
  12. dbase    dw    seg _Dorg_
  13. ; asy0vec - asynch channel 0 interrupt handler
  14.     public    asy0vec_
  15. asy0vec_ proc    far
  16.     push    ds        ; save on user stack
  17.     mov    ds,cs:dbase    ; establish interrupt data segment
  18.  
  19.     mov    Sssave,ss    ; stash user stack context
  20.     mov    Spsave,sp
  21.  
  22.     mov    ss,cs:dbase
  23.     lea    sp,Intstk_+512
  24.  
  25.     push    ax        ; save user regs on interrupt stack
  26.     push    bx
  27.     push    cx
  28.     push    dx
  29.     push    bp
  30.     push    si
  31.     push    di
  32.     push    es
  33.     push    ds
  34.     pop    es        ; set up es reg, so di can be used!!
  35.  
  36.     mov    ax,0        ; arg for service routine
  37.     push    ax
  38.     call    asyint_
  39.     pop    ax
  40.     jmp    doret
  41. asy0vec_    endp
  42.  
  43. ; asy1vec - asynch channel 1 interrupt handler
  44.     public    asy1vec_
  45. asy1vec_    proc    far
  46.     push    ds        ; save on user stack
  47.     mov    ds,cs:dbase    ; establish interrupt data segment
  48.  
  49.     mov    Sssave,ss    ; stash user stack context
  50.     mov    Spsave,sp
  51.  
  52.     mov    ss,cs:dbase
  53.     lea    sp,Intstk_+512
  54.  
  55.     push    ax        ; save user regs on interrupt stack
  56.     push    bx
  57.     push    cx
  58.     push    dx
  59.     push    bp
  60.     push    si
  61.     push    di
  62.     push    es
  63.     push    ds
  64.     pop    es        ; set up es reg, so di can be used!!
  65.  
  66.     mov    ax,1        ; arg for service routine
  67.     push    ax
  68.     call    asyint_
  69.     pop    ax
  70.     jmp    doret
  71. asy1vec_    endp
  72.  
  73. ; asy2vec - asynch channel 2 interrupt handler
  74.     public    asy2vec_
  75. asy2vec_    proc    far
  76.     push    ds        ; save on user stack
  77.     mov    ds,cs:dbase    ; establish interrupt data segment
  78.  
  79.     mov    Sssave,ss    ; stash user stack context
  80.     mov    Spsave,sp
  81.  
  82.     mov    ss,cs:dbase
  83.     lea    sp,Intstk_+512
  84.  
  85.     push    ax        ; save user regs on interrupt stack
  86.     push    bx
  87.     push    cx
  88.     push    dx
  89.     push    bp
  90.     push    si
  91.     push    di
  92.     push    es
  93.     push    ds
  94.     pop    es        ; set up es reg, so di can be used!!
  95.  
  96.     mov    ax,2        ; arg for service routine
  97.     push    ax
  98.     call    asyint_
  99.     pop    ax
  100.     jmp    doret
  101. asy2vec_    endp
  102.  
  103. ; asy3vec - asynch channel 3 interrupt handler
  104.     public    asy3vec_
  105. asy3vec_    proc    far
  106.     push    ds        ; save on user stack
  107.     mov    ds,cs:dbase    ; establish interrupt data segment
  108.  
  109.     mov    Sssave,ss    ; stash user stack context
  110.     mov    Spsave,sp
  111.  
  112.     mov    ss,cs:dbase
  113.     lea    sp,Intstk_+512
  114.  
  115.     push    ax        ; save user regs on interrupt stack
  116.     push    bx
  117.     push    cx
  118.     push    dx
  119.     push    bp
  120.     push    si
  121.     push    di
  122.     push    es
  123.     push    ds
  124.     pop    es        ; set up es reg, so di can be used!!
  125.  
  126.     mov    ax,3        ; arg for service routine
  127.     push    ax
  128.     call    asyint_
  129.     pop    ax
  130.     jmp    doret
  131. asy3vec_    endp
  132.  
  133. ; asy4vec - asynch channel 4 interrupt handler
  134.     public    asy4vec_
  135. asy4vec_    proc    far
  136.     push    ds        ; save on user stack
  137.     mov    ds,cs:dbase    ; establish interrupt data segment
  138.  
  139.     mov    Sssave,ss    ; stash user stack context
  140.     mov    Spsave,sp
  141.  
  142.     mov    ss,cs:dbase
  143.     lea    sp,Intstk_+512
  144.  
  145.     push    ax        ; save user regs on interrupt stack
  146.     push    bx
  147.     push    cx
  148.     push    dx
  149.     push    bp
  150.     push    si
  151.     push    di
  152.     push    es
  153.     push    ds
  154.     pop    es        ; set up es reg, so di can be used!!
  155.  
  156.     mov    ax,4        ; arg for service routine
  157.     push    ax
  158.     call    asyint_
  159.     pop    ax
  160.     jmp    doret
  161. asy4vec_    endp
  162.  
  163.     end
  164.